import numpy as np
%matplotlib notebook
import matplotlib.pyplot as plt
import ipywidgets as widgets
from maux import *
hide_interactive_toolbars()
# interaktívny editor pre vyšetrovanie priebehu elementárnych funkcií
from jedit import editor
np.warnings.filterwarnings('ignore', category=np.VisibleDeprecationWarning)
# nastavenie jazyka
from locale import setlocale, LC_ALL
from platform import uname
if uname()[0] == 'Linux':
setlocale(LC_ALL, 'sk_SK.utf8')
else:
setlocale(LC_ALL, 'sk_SK')
plt.rcParams["axes.formatter.use_locale"] = True
V nasledujúcich príkladoch budeme kresliť grafy cyklometrických funkcií.
Budeme sa venovať týmto funkciam: $$y = \arcsin x \\ y = \arccos x \\ y = \arctan x.$$ Cyklometrické funkcie sú inverzné ku goniometrickým funkciám.
Dokumentácia:
Nakreslenie grafu funkcie $$y = \arcsin x.$$ Funkcia arkussínus je definovaná na množine $\langle -1, 1 \rangle$. Je to inverzná funkcia k zúženiu funkcie sínus na interval $\left\langle -\frac{\pi}{2}, \frac{\pi}{2}\right\rangle$: $$ \forall x \in \langle -1, 1 \rangle \, \forall y \in \left\langle -\frac{\pi}{2}, \frac{\pi}{2}\right\rangle \!{:}\ \arcsin x = y \Leftrightarrow x = \sin y. $$ Všimnime si, že platí $$ \forall x \in \langle -1, 1 \rangle {:}\ \sin \arcsin x = x \\ \forall y \in \left\langle -\frac{\pi}{2}, \frac{\pi}{2}\right\rangle \!{:}\ \arcsin \sin y = y. $$
#####
##### nakreslenie grafu funkcie
#####
#### vstupné údaje
def f(X): return np.sin(X) # ufunc verzia zúženia funkcie sínus
X1 = np.linspace(-np.pi/2, np.pi/2, 2*100+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y1 = f(X1) # odpovedajúce hodnoty závislej premennej
def g(X): return X # ufunc verzia pre os súmernosti
X2 = np.linspace(-np.pi/2, np.pi/2, 2*20+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y2 = g(X2) # odpovedajúce hodnoty závislej premennej
def h(X): return np.arcsin(X) # ufunc verzia funkcie arkussínus
X3 = np.linspace(-1, 1, 2*100+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y3 = h(X3) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(8, 9) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Arkussínus") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
# ax.grid() # pravoúhla sieť
## spoločné nastavenia pre obe osi
lim = (-1.8, 1.8) # ohraničenie hodnôt
ticks = [-1, 0, 1] + [n * np.pi / 2 for n in [-1, 1]] # kótovanie
ticklabels = [-1, 0, 1] + [smart_ticklabel(n, r"\pi", 2) for n in [-1, 1]] # označenie kót
## x-ová os
ax.set_xlim(lim) # ohraničenie hodnôt pre os x
ax.set_xticks(ticks) # kótovanie x-ovej osi
ax.set_xticklabels(ticklabels) # označenie kót na x-ovej osi
## y-ová os
ax.set_ylim(lim) # ohraničenie hodnôt pre os y
ax.set_yticks(ticks) # kótovanie y-ovej osi
ax.set_yticklabels(ticklabels) # označenie kót na y-ovej osi
## graf funkcie
color1 = ax.plot([], [], label=r"zúženie funkcie sínus na $\left\langle -\frac{\pi}{2}, \frac{\pi}{2}\right\rangle$")[0].get_color()
ax.plot([-np.pi/2, np.pi/2], [-1, 1], 'o', c=color1) # krajné body definičného oboru
ax.plot(X1, Y1, c=color1)
## os súmernosti
ax.plot(X2, Y2, 'k--', lw=1, label=r"os súmernosti")
## graf inverznej funkcie
color3 = ax.plot([], [], label=r"funkcia arkussínus")[0].get_color()
ax.plot([-1, 1], [-np.pi/2, np.pi/2], 'o', c=color3) # krajné body definičného oboru
ax.plot(X3, Y3, c=color3)
## legenda
ax.legend()
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
#####
##### nakreslenie grafu funkcie
#####
#### vstupné údaje
def f(X): return np.sin(X) # ufunc verzia funkcie
X1 = np.linspace(-2*np.pi, 4*np.pi, 12*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y1 = f(X1) # odpovedajúce hodnoty závislej premennej
def g(X): return X # ufunc verzia pre os súmernosti
X2 = X1 # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y2 = g(X2) # odpovedajúce hodnoty závislej premennej
def h(X): return np.arcsin(X) # ufunc verzia funkcie arkussínus
X3 = np.linspace(-1, 1, 2*100+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y3 = h(X3) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 9) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Graf funkcie sínus a arkussínus") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
# ax.grid() # pravoúhla sieť
## spoločné nastavenia pre obe osi
tick_numerators = range(-4, 8+1)
ticks = [n * np.pi / 2 for n in tick_numerators] # kótovanie
ticklabels = [smart_ticklabel(n, r"\pi", 2) for n in tick_numerators] # označenie kót
## x-ová os
ax.set_xticks(ticks) # kótovanie x-ovej osi
ax.set_xticklabels(ticklabels) # označenie kót na x-ovej osi
## y-ová os
ax.set_yticks(ticks) # kótovanie y-ovej osi
ax.set_yticklabels(ticklabels) # označenie kót na y-ovej osi
## graf funkcie
ax.plot(X1, Y1, label=r"$y = \sin\,x$")
ax.plot(X2, Y2, 'k--', lw=1, label=r"os súmernosti")
ax.plot(Y1, X1, label=r"$x = \sin\,y$")
ax.plot(X3, Y3, label=r"$y = \arcsin\,x$")
## legenda
ax.legend()
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
Vyjadrenie inverznej funkcie k zúženiu funkcie sínus na interval $\left\langle \frac{\pi}{2}, \frac{3\pi}{2} \right\rangle$ pomocou funkcie arkussínus. Graficke overenie správnosti riešenia.
Zdôvodnenie. Nech $x \in \langle -1, 1 \rangle$ a $y \in \left\langle \frac{\pi}{2}, \frac{3\pi}{2} \right\rangle$. Potom $y - \pi \in \left\langle -\frac{\pi}{2}, \frac{\pi}{2} \right\rangle$ a preto \begin{align*} x = \sin y & \Leftrightarrow x = \sin (\pi - y) \Leftrightarrow - x = \sin (y - \pi) \Leftrightarrow \arcsin (-x) = \arcsin \sin (y - \pi) \\ & \Leftrightarrow \arcsin (-x) = y - \pi \Leftrightarrow - \arcsin x = y - \pi \Leftrightarrow y = \pi - \arcsin x . \end{align*} Predpis inverznej funkcie má tak tvar $$y = \pi - \arcsin x.$$
#####
##### inverzná funkcia
#####
#### vstupné údaje
def f(X): return np.sin(X) # ufunc verzia zúženia funkcie sínus
X1 = np.linspace(np.pi/2, 3*np.pi/2, 2*100+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y1 = f(X1)
def g(X): return X # ufunc verzia pre os súmernosti
X2 = np.linspace(-1, 3*np.pi/2, 2*20+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y2 = g(X2) # odpovedajúce hodnoty závislej premennej
def h(X): return np.pi - np.arcsin(X) # ufunc verzia inverznej funkcie
X3 = np.linspace(-1, 1, 2*100+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y3 = h(X3) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 9) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Inverzná funkcia") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
# ax.grid() # pravoúhla sieť
## spoločné nastavenia pre obe osi
lim = (-1.1, 4.8) # ohraničenie hodnôt
ticks = [-1, 0, 1] + [n * np.pi / 2 for n in [1, 2, 3]] # kótovanie
ticklabels = [-1, 0, 1] + [smart_ticklabel(n, r"\pi", 2) for n in [1, 2, 3]] # označenie kót
## x-ová os
ax.set_xlim(lim) # ohraničenie hodnôt pre os x
ax.set_xticks(ticks) # kótovanie x-ovej osi
ax.set_xticklabels(ticklabels) # označenie kót na x-ovej osi
## y-ová os
ax.set_ylim(lim) # ohraničenie hodnôt pre os y
ax.set_yticks(ticks) # kótovanie y-ovej osi
ax.set_yticklabels(ticklabels) # označenie kót na y-ovej osi
## graf funkcie
color1 = ax.plot([], [], label=r"zúženie funkcie sínus na $\left\langle \frac{\pi}{2}, \frac{3\pi}{2} \right\rangle$")[0].get_color()
ax.plot([np.pi/2, 3*np.pi/2], [1, -1], 'o', c=color1) # krajné body definičného oboru
ax.plot(X1, Y1, c=color1)
## os súmernosti
ax.plot(X2, Y2, 'k--', lw=1, label=r"os súmernosti")
## graf inverznej funkcie
color3 = ax.plot([], [], label=r"inverzná funkcia $y = \pi-\arcsin\,x$")[0].get_color()
ax.plot([-1, 1], [3*np.pi/2, np.pi/2], 'o', c=color3) # krajné body definičného oboru
ax.plot(X3, Y3, c=color3)
## legenda
ax.legend()
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
Úprava predpisu funkcie $$y = \arcsin \sin x$$ na tvar, ktorý odpovedá predpisu po častiach lineárnej funkcie. Graficke overenie správnosti riešenia.
Vysvetlenie. Nech $x \in \left\langle \frac{(2n-1)\pi}{2}, \frac{(2n+1)\pi}{2} \right)$, kde $n$ je celé číslo. Potom $x - n\pi \in \left\langle -\frac{\pi}{2}, \frac{\pi}{2} \right)$ a tiež $$ \sin (x - n\pi) = \sin x \cos n\pi - \cos x \sin n\pi = \sin x \times (-1)^n - \cos x \times 0 = (-1)^n \sin x. $$ Odtiaľ $$ \arcsin \sin x = \arcsin ((-1)^n \sin (x - n\pi)) = (-1)^n \arcsin \sin (x - n\pi) = (-1)^n (x - n\pi). $$ Grafom funkcie na intervale $\left\langle \frac{(2n-1)\pi}{2}, \frac{(2n+1)\pi}{2} \right)$ je tak priamka určená rovnicou $y = (-1)^n (x - n\pi)$.
Vyjadrenie pre celé číslo $n$ získame z týchto úprav: $$ -\frac{\pi}{2} \leq x - n\pi < \frac{\pi}{2} \Leftrightarrow n \leq \frac{1}{2}+\frac{x}{\pi} < n+1 \Leftrightarrow n = \left \lfloor \frac{1}{2}+\frac{x}{\pi} \right\rfloor\!. $$
Dokumentácia:
#####
##### úprava predpisu funkcie
#####
#### vstupné údaje
def f(X): return np.arcsin(np.sin(X)) # ufunc verzia zúženia funkcie sínus
X = np.linspace(-3*np.pi, 3*np.pi, 6*2*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y = f(X) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(8, 3) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Úprava predpisu funkcie") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
# ax.grid() # pravoúhla sieť
## x-ová os
xtick_numerators = range(-6, 6+1) # ohraničenie hodnôt pre os x
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators]) # kótovanie x-ovej osi
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 2) for n in xtick_numerators]) # označenie kót na x-ovej osi
## y-ová os
ytick_numerators = range(-1, 1+1) # ohraničenie hodnôt pre os y
ax.set_yticks([n * np.pi / 2 for n in ytick_numerators]) # kótovanie y-ovej osi
ax.set_yticklabels([smart_ticklabel(n, r"\pi", 2) for n in ytick_numerators]) # označenie kót na y-ovej osi
## graf funkcie
ax.plot(X, Y, c='yellow', lw='5', alpha=0.5, label=r"zadanie $y = \arcsin\,\sin\,x$")
## úprava predpisu funkcie
def g(X):
n = np.floor(1 / 2 + X / np.pi)
return (- 1) ** n * (X - n * np.pi)
ax.plot(X, g(X), label=r"riešenie $y = (-1)^n (x - n\pi)$, kde $n = \left \lfloor \frac{1}{2}+\frac{x}{\pi} \right\rfloor$")
## legenda
# ax.legend()
ax.legend(loc=(0.25, -0.70))
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
Nakreslenie grafu funkcie $$y = \arccos x.$$ Funkcia arkuskosínus je definovaná na množine $\langle -1, 1 \rangle$. Je to inverzná funkcia k zúženiu funkcie kosínus na interval $\langle 0, \pi \rangle$: $$ \forall x \in \langle -1, 1 \rangle \, \forall y \in \langle 0, \pi \rangle {:}\ \arccos x = y \Leftrightarrow x = \cos y. $$ Všimnime si, že platí $$ \forall x \in \langle -1, 1 \rangle {:}\ \cos \arccos x = x \\ \forall y \in \langle 0, \pi \rangle {:}\ \arccos \cos y = y. $$
#####
##### nakreslenie grafu funkcie
#####
#### vstupné údaje
def f(X): return np.cos(X) # ufunc verzia zúženia funkcie kosínus
X1 = np.linspace(0, np.pi, 2*100+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y1 = f(X1) # odpovedajúce hodnoty závislej premennej
def g(X): return X # ufunc verzia pre os súmernosti
X2 = np.linspace(-1, np.pi, 50+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y2 = g(X2) # odpovedajúce hodnoty závislej premennej
def h(X): return np.arccos(X) # ufunc verzia funkcie arkuskosínus
X3 = np.linspace(-1, 1, 2*100+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y3 = h(X3) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(8, 9) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Arkuskosínus") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
# ax.grid() # pravoúhla sieť
## spoločné nastavenia pre obe osi
lim = (-1.1, 3.25) # ohraničenie hodnôt
ticks = [-1, 0, 1] + [n * np.pi / 2 for n in [1, 2]] # kótovanie
ticklabels = [-1, 0, 1] + [smart_ticklabel(n, r"\pi", 2) for n in [1, 2]] # označenie kót
## x-ová os
ax.set_xlim(lim) # ohraničenie hodnôt pre os x
ax.set_xticks(ticks) # kótovanie x-ovej osi
ax.set_xticklabels(ticklabels) # označenie kót na x-ovej osi
## y-ová os
ax.set_ylim(lim) # ohraničenie hodnôt pre os y
ax.set_yticks(ticks) # kótovanie y-ovej osi
ax.set_yticklabels(ticklabels) # označenie kót na y-ovej osi
## graf funkcie
color1 = ax.plot([], [], label=r"zúženie funkcie kosínus na $\langle 0, \pi \rangle$")[0].get_color()
ax.plot([0, np.pi], [1, -1], 'o', c=color1) # krajné body definičného oboru
ax.plot(X1, Y1, c=color1)
## os súmernosti
ax.plot(X2, Y2, 'k--', lw=1, label=r"os súmernosti")
## graf inverznej funkcie
color3 = ax.plot([], [], label=r"funkcia arkuskosínus")[0].get_color()
ax.plot([-1, 1], [np.pi, 0], 'o', c=color3) # krajné body definičného oboru
ax.plot(X3, Y3, c=color3)
## legenda
ax.legend()
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
#####
##### nakreslenie grafu funkcie
#####
#### vstupné údaje
def f(X): return np.cos(X) # ufunc verzia funkcie
X1 = np.linspace(-2*np.pi, 4*np.pi, 12*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y1 = f(X1) # odpovedajúce hodnoty závislej premennej
def g(X): return X # ufunc verzia pre os súmernosti
X2 = X1 # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y2 = g(X2) # odpovedajúce hodnoty závislej premennej
def h(X): return np.arccos(X) # ufunc verzia funkcie arkuskosínus
X3 = np.linspace(-1, 1, 2*100+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y3 = h(X3) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 9) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Graf funkcie kosínus a arkuskosínus") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
# ax.grid() # pravoúhla sieť
## spoločné nastavenia pre obe osi
tick_numerators = range(-4, 8+1)
ticks = [n * np.pi / 2 for n in tick_numerators] # kótovanie
ticklabels = [smart_ticklabel(n, r"\pi", 2) for n in tick_numerators] # označenie kót
## x-ová os
ax.set_xticks(ticks) # kótovanie x-ovej osi
ax.set_xticklabels(ticklabels) # označenie kót na x-ovej osi
## y-ová os
ax.set_yticks(ticks) # kótovanie y-ovej osi
ax.set_yticklabels(ticklabels) # označenie kót na y-ovej osi
## graf funkcie
ax.plot(X1, Y1, label=r"$y = \cos\,x$")
ax.plot(X2, Y2, 'k--', lw=1, label=r"os súmernosti")
ax.plot(Y1, X1, label=r"$x = \cos\,y$")
ax.plot(X3, Y3, label=r"$y = \arccos\,x$")
## legenda
ax.legend()
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
Pomocou funkcie arkuskosínus vyjadrite inverznú funkciu k zúženiu funkcie kosínus na interval $\langle -\pi, 0 \rangle$. Overte graficky, že riešenie je správne.
####
#### šablóna riešenia
####
### zadanie
fig, ax = plt.subplots()
fig.set_size_inches(9, 9)
init_subplot(ax)
ax.set_title(r"Inverzná funkcia")
ax.set_aspect('equal')
# ax.grid()
lim = (-np.pi*1.1, 1*1.1)
ticks = [-1, 1] + [n * np.pi / 2 for n in range(-2, 0+1)]
ticklabels = [-1, 1] + [smart_ticklabel(n, r"\pi", 2) for n in range(-2, 0+1)]
ax.set_xlim(lim)
ax.set_xticks(ticks)
ax.set_xticklabels(ticklabels)
ax.set_ylim(lim)
ax.set_yticks(ticks)
ax.set_yticklabels(ticklabels)
def f(X): return np.cos(X)
X1 = np.linspace(-np.pi, 0, 2*100+1)
color1 = ax.plot([], [], label=r"zúženie funkcie kosínus na $\langle {-}\pi, 0 \rangle$")[0].get_color()
ax.plot([-np.pi, 0], [-1, 1], 'o', c=color1) # krajné body definičného oboru
ax.plot(X1, f(X1), c=color1)
def g(X): return X
X2 = np.linspace(-np.pi, 1, 2*20+1)
ax.plot(X2, g(X2), 'k--', lw=1, label=r"os súmernosti")
### riešenie (toto upravte)
# def h(X): return None # ufunc verzia inverznej funkcie
# X3 = None # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
# color3 = ax.plot([], [], label=r"inverzná funkcia $y = \ldots \arccos\,x \ldots $")[0].get_color()
# ax.plot([None, None], [None, None], 'o', c=color3) # krajné body definičného oboru
# ax.plot(X3, h(X3), c=color3)
### dokončenie
ax.legend()
# fig.savefig("<meno súboru>.png")
fig.show()
Pomocou funkcie arkussínus vyjadrite funkciu arkuskosínus.
###
### šablóna riešenia
###
## zadanie
fig, ax = plt.subplots()
fig.set_size_inches(6, 10)
init_subplot(ax)
ax.set_title(r"Vyjadrenie funkcie arkuskosínus pomocou funkcie arkussínus")
ax.set_aspect('equal')
# ax.grid()
ax.set_xticks([-1, 0, 1])
ytick_numerators = range(0, 2+1)
ax.set_yticks([n * np.pi / 2 for n in ytick_numerators])
ax.set_yticklabels([smart_ticklabel(n, r"\pi", 2) for n in ytick_numerators])
def f(X): return np.arccos(X)
X = np.linspace(-1, 1, 2*100+1)
ax.plot([-1, 1], [np.pi, 0], 'o', c='yellow', ms='10', alpha=0.5)
ax.plot(X, f(X), c='yellow', lw='5', alpha=0.5, label=r"zadanie $y = \arccos\,x$")
## riešenie
# def g(X): return None # tento údaj upravte
# color = ax.plot([], [], label=r"riešenie $y = \ldots \arcsin\,x \ldots$")[0].get_color() # tento údaj upravte
# ax.plot([-1, 1], [np.pi, 0], 'o', c=color)
# ax.plot(X, g(X), c=color)
## legenda
ax.legend()
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
#####
##### nakreslenie grafu funkcie
#####
#### vstupné údaje
def f(X): return np.cos(X) # ufunc verzia funkcie
X1 = np.linspace(-2*np.pi, 4*np.pi, 12*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y1 = f(X1) # odpovedajúce hodnoty závislej premennej
def g(X): return X # ufunc verzia pre os súmernosti
X2 = X1 # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y2 = g(X2) # odpovedajúce hodnoty závislej premennej
def h(X): return np.arccos(X) # ufunc verzia funkcie arkuskosínus
X3 = np.linspace(-1, 1, 2*100+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y3 = h(X3) # odpovedajúce hodnoty závislej premennej
def h2(X): return np.arcsin(X) # ufunc verzia funkcie arkussínus
X4 = np.linspace(-1, 1, 2*100+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y4 = h2(X4) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 9) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Graf funkcie kosínus, arkuskosínus a arkussínus") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
# ax.grid() # pravoúhla sieť
## spoločné nastavenia pre obe osi
tick_numerators = range(-4, 8+1)
ticks = [n * np.pi / 2 for n in tick_numerators] # kótovanie
ticklabels = [smart_ticklabel(n, r"\pi", 2) for n in tick_numerators] # označenie kót
## x-ová os
ax.set_xticks(ticks) # kótovanie x-ovej osi
ax.set_xticklabels(ticklabels) # označenie kót na x-ovej osi
## y-ová os
ax.set_yticks(ticks) # kótovanie y-ovej osi
ax.set_yticklabels(ticklabels) # označenie kót na y-ovej osi
## graf funkcie
ax.plot(X1, Y1, label=r"$y = \cos\,x$")
ax.plot(X2, Y2, 'k--', lw=1, label=r"os súmernosti")
ax.plot(Y1, X1, label=r"$x = \cos\,y$")
ax.plot(X3, Y3, label=r"$y = \arccos\,x$")
ax.plot(X4, Y4, label=r"$y = \arcsin\,x$")
## legenda
ax.legend()
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
Upravte predpis funkcie $$y = \arccos \cos x$$ na tvar, ktorý odpovedá predpisu po častiach lineárnej funkcie. Ako zaujímavá časť grafu funkcie si zvoľte interval $\langle -3\pi, 3\pi \rangle$ pre hodnoty nezávislej premennej. Overte graficky, že riešenie je správne.
Návod. Platí $$ \arccos(-x) = \pi - \cos x \\ n\ \mathrm{mod}\ 2 = \begin{cases} 0 & \text{ak $n$ je párne číslo,} \\ 1 & \text{ak $n$ je nepárne číslo.} \end{cases} $$ Dokumentácia:
###
### šablóna riešenia
###
## zadanie
fig, ax = plt.subplots()
fig.set_size_inches(8, 4)
init_subplot(ax)
ax.set_title(r"Úprava predpisu funkcie")
ax.set_aspect('equal')
# ax.grid()
xtick_numerators = range(-6, 6+1)
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators])
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 2) for n in xtick_numerators])
ytick_numerators = range(0, 2+1)
ax.set_yticks([n * np.pi / 2 for n in ytick_numerators])
ax.set_yticklabels([smart_ticklabel(n, r"\pi", 2) for n in ytick_numerators])
def f(X): return np.arccos(np.cos(X))
X = np.linspace(-3*np.pi, 3*np.pi, 6*2*10+1)
ax.plot(X, f(X), c='yellow', lw='5', alpha=0.5, label=r"zadanie $y = \arccos\,\cos\,x$")
## riešenie (toto upravte)
# def g(X):
# n = None
# return None
# ax.plot(X, g(X), label=r"riešenie $y = \ldots n\ \mathrm{mod}\ 2 \ldots$, kde $n = \left \lfloor ? \right\rfloor$")
## dokončenie
# ax.legend()
ax.legend(loc=(0.18, -0.90))
# fig.savefig("<meno súboru>.png")
fig.show()
Nakreslenie grafu funkcie $$y = \arctan x.$$ Funkcia arkustangens je definovaná na množine $R$. Je to inverzná funkcia k zúženiu funkcie tangens na interval $\left( -\frac{\pi}{2}, \frac{\pi}{2}\right)$: $$ \forall x \in R\, \forall y \in \left( -\frac{\pi}{2}, \frac{\pi}{2}\right) \!{:}\ \arctan x = y \Leftrightarrow x = \tan y. $$ Všimnime si, že platí $$ \forall x \in R {:}\ \tan \arctan x = x \\ \forall y \in \left( -\frac{\pi}{2}, \frac{\pi}{2}\right) \!{:}\ \arctan \tan y = y. $$
#####
##### nakreslenie grafu funkcie
#####
#### vstupné údaje
def f(X): return np.tan(X) # ufunc verzia zúženia funkcie tangens
X1 = np.linspace(-np.pi/2, np.pi/2, 2*100+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
X1 = X1[(-np.pi/2 < X1) & (X1 < np.pi/2)] # krajné body intervalu nepatria do definičného oboru funkcie
Y1 = f(X1) # odpovedajúce hodnoty závislej premennej
def g(X): return X # ufunc verzia pre os súmernosti
X2 = np.linspace(-5.5, 5.5, 11*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y2 = g(X2) # odpovedajúce hodnoty závislej premennej
def h(X): return np.arctan(X) # ufunc verzia funkcie arkustangens
X3 = np.linspace(-5.5, 5.5, 11*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y3 = h(X3) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 10) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Arkustangens") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
# ax.grid() # pravoúhla sieť
## spoločné nastavenia pre obe osi
lim = (-5.5, 5.5) # ohraničenie hodnôt
ticks_10 = [n for n in range(-5, 5+1)]
ticks = ticks_10 + [n * np.pi / 2 for n in [-1, 1]] # kótovanie
ticklabels = ticks_10 + [smart_ticklabel(n, r"\pi", 2) for n in [-1, 1]] # označenie kót
## x-ová os
ax.set_xlim(lim) # ohraničenie hodnôt pre os x
ax.set_xticks(ticks) # kótovanie x-ovej osi
ax.set_xticklabels(ticklabels) # označenie kót na x-ovej osi
## y-ová os
ax.set_ylim(lim) # ohraničenie hodnôt pre os y
ax.set_yticks(ticks) # kótovanie y-ovej osi
ax.set_yticklabels(ticklabels) # označenie kót na y-ovej osi
## graf funkcie
ax.plot(X1, Y1, label=r"zúženie funkcie tangens na $\left( -\frac{\pi}{2}, \frac{\pi}{2}\right)$")
## os súmernosti
ax.plot(X2, Y2, 'k--', lw=1, label=r"os súmernosti")
## graf inverznej funkcie
ax.plot(X3, Y3, label=r"funkcia arkustangens")
## legenda
ax.legend()
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
Pomocou funkcie arkustangens vyjadrite inverznú funkciu k zúženiu funkcie tangens na interval $\left( -\frac{3\pi}{2}, -\frac{\pi}{2} \right)$. Overte graficky, že riešenie je správne.
####
#### šablóna riešenia
####
### zadanie
fig, ax = plt.subplots()
fig.set_size_inches(9, 9)
init_subplot(ax)
ax.set_title(r"Inverzná funkcia")
ax.set_aspect('equal')
# ax.grid()
lim = (-6.5, 4.5)
ticks_10 = [n for n in range(0, 4+1)]
ticks = ticks_10 + [n * np.pi / 2 for n in range(-3, -1+1)]
ticklabels = ticks_10 + [smart_ticklabel(n, r"\pi", 2) for n in range(-3, -1+1)]
ax.set_xlim(lim)
ax.set_xticks(ticks)
ax.set_xticklabels(ticklabels)
ax.set_ylim(lim)
ax.set_yticks(ticks)
ax.set_yticklabels(ticklabels)
def f(X): return np.tan(X)
X1 = np.linspace(-3*np.pi/2, -np.pi/2, 2*100+1)
X1 = X1[(-3*np.pi/2 < X1) & (X1 < -np.pi/2)] # krajné body intervalu nepatria do definičného oboru funkcie
ax.plot(X1, f(X1), label=r"zúženie funkcie tangens na $\left( -\frac{3\pi}{2}, -\frac{\pi}{2}\right)$")
def g(X): return X
X2 = np.linspace(-6.5, 4.5, 11*10+1)
ax.plot(X2, g(X2), 'k--', lw=1, label=r"os súmernosti")
## riešenie (toto upravte)
# def h(X): return None # ufunc verzia inverznej funkcie
# X3 = X2 # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
# ax.plot(X3, h(X3), label=r"inverzná funkcia $y = \ldots \arctan\,x \ldots$")
## dokončenie
ax.legend()
# fig.savefig("<meno súboru>.png")
fig.show()
Nakreslenie grafu funkcie $$y = \arctan \tan x.$$
#####
##### nakreslenie grafu funkcie
#####
#### vstupné údaje
def f(X): return np.arctan(np.tan(X)) # ufunc verzia funkcie
X = np.linspace(-2*np.pi, 2*np.pi, 8*100+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y = f(X) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(8, 2) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Graf funkcie $y = \arctan\,\tan\,x$") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
# ax.grid() # pravoúhla sieť
## x-ová os
xtick_numerators = range(-4, 4+1)
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators]) # kótovanie x-ovej osi
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 2) for n in xtick_numerators]) # označenie kót na x-ovej osi
## y-ová os
ytick_numerators = range(-1, 1+1)
ax.set_yticks([n * np.pi / 2 for n in ytick_numerators]) # kótovanie y-ovej osi
ax.set_yticklabels([smart_ticklabel(n, r"\pi", 2) for n in ytick_numerators]) # označenie kót na y-ovej osi
## graf funkcie
color = ax.plot([], [])[0].get_color()
for n in [-4]:
I = X[(n*np.pi/2 <= X) & (X < (n+1)*np.pi/2)]
ax.plot(I, f(I), c=color)
#ax.plot(n*np.pi/2, 0, 'o', c=color) # číslo patrí do oboru definície
ax.plot((n+1)*np.pi/2, np.pi/2, 'o', c=color, mfc='w') # číslo nepatrí do oboru definície
for n in range(-3, 1+1, 2):
I = X[(n*np.pi/2 < X) & (X < (n+2)*np.pi/2)]
ax.plot(I, f(I), c=color)
ax.plot(n*np.pi/2, -np.pi/2, 'o', c=color, mfc='w') # číslo nepatrí do oboru definície
ax.plot((n+2)*np.pi/2, np.pi/2, 'o', c=color, mfc='w') # číslo nepatrí do oboru definície
for n in [3]:
I = X[(n*np.pi/2 < X) & (X <= (n+1)*np.pi/2)]
ax.plot(I, f(I), c=color)
ax.plot(n*np.pi/2, -np.pi/2, 'o', c=color, mfc='w') # číslo nepatrí do oboru definície
# ax.plot((n+1)*np.pi/2, 0, 'o', c=color) # číslo patrí do oboru definície
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
Pomocou funkcie arkuskosínus vyjadrite inverznú funkciu k funkcii danej predpisom $$y = \cos 3x + \sin 3x,\ -\frac{\pi}{4} \leq x \leq \frac{\pi}{12}.$$ Overte graficky, že riešenie je správne.
####
#### šablóna riešenia
####
### zadanie
fig, ax = plt.subplots()
fig.set_size_inches(9, 9)
init_subplot(ax)
ax.set_title(r"Inverzná funkcia")
ax.set_aspect('equal')
# ax.grid()
lim = (-1.5*1.1, 1.5*1.1)
ticks = [-1.5, -1, 0, 1, 1.5] + [n * np.pi / 12 for n in range(-3, 1+1)]
ticklabels = [-1.5, -1, 0, 1, 1.5] + [smart_ticklabel(n, r"\pi", 12) for n in range(-3, 1+1)]
ax.set_xlim(lim)
ax.set_xticks(ticks)
ax.set_xticklabels(ticklabels)
ax.set_ylim(lim)
ax.set_yticks(ticks)
ax.set_yticklabels(ticklabels)
def f(X): return np.cos(3 * X) + np.sin(3 * X)
X1 = np.linspace(-np.pi/4, np.pi/12, 4*100+1)
color1 = ax.plot([], [], label=r"funkcia $y = \cos\,3x + \sin\,3x,\ -\frac{\pi}{4} \leq x \leq \frac{\pi}{12}$")[0].get_color()
ax.plot(X1, f(X1), c=color1)
ax.plot([-np.pi/4, np.pi/12], [-np.sqrt(2), np.sqrt(2)], 'o', c=color1) # krajné body definičného oboru
def g(X): return X
X2 = np.linspace(-1.5, 1.5, 3*100+1)
ax.plot(X2, g(X2), 'k--', lw=1, label=r"os súmernosti")
### riešenie (toto upravte)
# def h(X): return None # ufunc verzia inverznej funkcie
# X3 = None # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
# color3 = ax.plot([], [], label=r"inverzná funkcia $y = \ldots \arcsin\, x \ldots$")[0].get_color()
# ax.plot(X3, h(X3), c=color3) # graf inverznej funkcie
# ax.plot([None, None], [None, None], 'o', c=color3) # krajné body definičného oboru
### dokončenie
ax.legend()
# fig.savefig("<meno súboru>.png")
fig.show()